package com.hdsx.restful.glzt.structure.sfz.rest;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.springframework.stereotype.Service;

import com.hdsx.restful.base.PreparedDataListener;
import com.hdsx.restful.glzt.roadline.lxxx.bean.Znode;
import com.hdsx.restful.glzt.structure.ql.bean.StatisticalResult;
import com.hdsx.restful.glzt.structure.sfz.bean.Sfz;
import com.hdsx.restful.glzt.structure.sfz.service.SfzServer;
import com.hdsx.restful.util.CheckEmpty;
import com.hdsx.restful.util.Dao;
import com.hdsx.restful.util.EasyUI;


// TODO: Auto-generated Javadoc
/**
 * crk服务
 */
@Path("/sfz")
@Service
public class SfzRestServer {

	/** The sfz server. */
	@Resource(name = "sfzServerImpl")
	private SfzServer server;

	@GET
	@Path("/getListByLxbm")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Sfz> getListByLxbm(@QueryParam("lxbm") String lxbm,@QueryParam("page") int page,@QueryParam("rows") int rows){
		EasyUI<Sfz> easyUI=new EasyUI<Sfz>(page,rows);
		int count =server.querySfzCountByLxbm(lxbm);
		List<Sfz> sfzListByLxbm = server.getListByLxbm(lxbm,easyUI.getBegin(),easyUI.getEnd());
		easyUI.setTotal(count);
		easyUI.setRows(sfzListByLxbm);
		return easyUI;
	}
	
	@GET
	@Path("/getListByXzqhbm")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Sfz> getListByXzqhbm(@QueryParam("xzqhbm") String xzqhbm,@QueryParam("page") int page,@QueryParam("rows") int rows){
		EasyUI<Sfz> easyUI=new EasyUI<Sfz>(page,rows);
		int count =server.querySfzCountXzqhbm(xzqhbm);
		List<Sfz> sfzListByXzqhbm = server.getListByXzqhbm(xzqhbm,easyUI.getBegin(),easyUI.getEnd());
		easyUI.setTotal(count);
		easyUI.setRows(sfzListByXzqhbm);
		return easyUI;
	}
	
	
	/**
	 * http://192.168.0.137:8080/restful/rest/sfz/list?lxbm=S22&xzqhbm=610502&sfzmc=渭南北&page=0&rows=10
	 * @param lxbm
	 * @param xzqhbm
	 * @param sfzmc
	 * @param page
	 * @param rows
	 * @return
	 */
	@GET
	@Path("/list")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Sfz> getList(@QueryParam("lxbm") String lxbm,@QueryParam("xzqhbm")String xzqhbm,
			@QueryParam("sxxfx") String sxxfx,@QueryParam("qdzh") String qdzh_string,
			@QueryParam("zdzh") String zdzh_string,@QueryParam("name") String name,
			@QueryParam("page") int page,@QueryParam("rows") int rows) throws Exception{
		EasyUI<Sfz> easyUI=new EasyUI<Sfz>(page,rows);
		Double qdzh = null;
		Double zdzh = null;
		try{
			qdzh = Double.parseDouble(qdzh_string);
			zdzh = Double.parseDouble(zdzh_string);
		}catch(Exception e){
			System.out.println("qdzh和zdzh没有输入或格式错误！");qdzh=null;zdzh=null;
		}
		xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
		int count =server.queryCount(lxbm,xzqhbm,sxxfx,qdzh,zdzh,name);
		List<Sfz> results = server.queryList(lxbm,xzqhbm,sxxfx,qdzh,zdzh,name,easyUI.getBegin(),easyUI.getEnd());
		easyUI.setTotal(count);
		easyUI.setRows(results);
		return easyUI;
	}
	
	
	@GET
	@Path("/getBySfzbm")
	@Produces(MediaType.APPLICATION_JSON)
	public Sfz getBySfzbm(@QueryParam("sfzbm") String sfzbm){
		Sfz sfz = server.getOne(sfzbm);
		return sfz;
	}
	
	/**
	 * 根据id得到sfz
	 * 
	 * @param id
	 *            唯一标识
	 * @return
	 */
	@GET
	@Path("/{id}")
	@Produces(MediaType.APPLICATION_JSON)
	public Sfz getById(@PathParam("id") String id) {
		Sfz sfz = server.getById(id);
		return sfz;
	}

	/**
	 * 根据id删除sfz
	 * 
	 * @param id
	 *            唯一标识
	 * @return 若成功返回true，否则返回false
	 */
	@DELETE
	@Path("/{id}")
	@Produces(MediaType.APPLICATION_JSON)
	public boolean deleteById(@PathParam("id") String id) {
		return server.deleteById(id);
	}

	/**
	 * 更新sfz
	 * 
	 * @param sfz
	 *            待更新的sfz
	 * @return 若成功返回true，否则返回false
	 */
	@POST
	@Path("/update")
	@Consumes(MediaType.APPLICATION_JSON)
	@Produces(MediaType.APPLICATION_JSON)
	public boolean updateCrk(Sfz sfz) {

		return server.updateSfz(sfz);
	}

	/**
	 * 添加sfz
	 * 
	 * @param sfz
	 *            待添加的sfz
	 * @return 若成功返回true，否则返回false
	 */
	@PUT
	@Path("/add")
	@Consumes(MediaType.APPLICATION_JSON)
	@Produces(MediaType.APPLICATION_JSON)
	public boolean addPoi(Sfz sfz) {
		return server.addSfz(sfz);
	}
	
	@GET
	@Path("/info")
	@Produces(MediaType.APPLICATION_JSON)
	public List<Dao>  getShapeById(@QueryParam("id") String id) {
		return server.getShapeById(id);
	}
	@GET
	@Path("/tjjg")
	@Produces(MediaType.APPLICATION_JSON)
	public StatisticalResult getStatisticalResult(@QueryParam("szlx") String szlx,@QueryParam("xzqhbm") String xzqhbm,@QueryParam("type") String type){
		xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("lxbm", szlx);
		map.put("xzqhbm", xzqhbm);
		map.put("type", type);
		StatisticalResult tjjg = server.countByParameter(map);
		return tjjg;
	}
	
//	/**
//	 *  多边形查询（框选）
//	 * @param wkt
//	 * @return
//	 */
//	@GET
//	@Path("/wkt")
//	@Produces(MediaType.APPLICATION_JSON)
//	public List<Sfz> queryByDbx(@QueryParam("wkt") String wkt){
//		return sfzServer.queryByDbx(wkt);
//	}
	/**
	 * 路线收费站
	 * @return
	 */
	@GET
	@Path("/sfzNode")
	@Produces(MediaType.APPLICATION_JSON)
	public List<Znode> tree(){
		return PreparedDataListener.getData("sfz");
//		return server.sfzNode();
	}
	
	
	
	/** @param lxbm 
	    * @param lxmc 
	    * @param sfzmc 
	    * @param sfzlx 
	    * @param page 
	    * @param rows*/
	@GET
	@Path("/queryListByParam")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Sfz> queryListByParam(@QueryParam("lxbm") String lxbm,@QueryParam("lxmc") String lxmc,
			@QueryParam("sfzmc") String sfzmc,@QueryParam("sfzlx") int sfzlx,@QueryParam("page") int page,
			@QueryParam("rows") int rows){
		
		EasyUI<Sfz> easyUI=new EasyUI<Sfz>(page,rows);
		int count =server.queryCountByParam(lxbm,lxmc,sfzmc,sfzlx);
		List<Sfz> list = server.queryListByParam(lxbm,lxmc,sfzmc,sfzlx,page,rows);
		easyUI.setTotal(count);
		easyUI.setRows(list);
		return easyUI;
	}
	@GET
	@Path("/queryListById")
	@Produces(MediaType.APPLICATION_JSON)
	public List<Sfz> queryListById(@QueryParam("id") String id){
		
		List<Sfz> list = server.queryListById(id);
		return list;
	}
    
	@GET
	@Path("/detail")
	@Produces(MediaType.APPLICATION_JSON)
	public EasyUI<Sfz> detail(@QueryParam("szlx") String szlx,@QueryParam("xzqhbm") String xzqhbm,
			@QueryParam("lxfl") String lxfl,@QueryParam("page") int page,@QueryParam("rows") int rows){
		xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
		EasyUI<Sfz> easyUI = new EasyUI<Sfz>(page, rows);
		Map<String, Object> map = easyUI.getParameter();
		map.put("lxbm", szlx);
		map.put("xzqhbm", xzqhbm);
		try{
			map.put("lxfl", Integer.parseInt(lxfl));
		}catch (Exception e){
			System.out.println("不是类型分类！");
		}
		List<Sfz> detail = server.detail(map);
		int total = server.countDetail(map);
		easyUI.setRows(detail);
		easyUI.setTotal(total);
		return easyUI;
	}
	
    @GET
	@Path("/all")
	@Produces(MediaType.APPLICATION_JSON)
	public List<Sfz> all(@QueryParam("lxbm") String lxbm,@QueryParam("xzqhbm")String xzqhbm,
			@QueryParam("sxxfx") String sxxfx,@QueryParam("qdzh") String qdzh_string,
			@QueryParam("zdzh") String zdzh_string,@QueryParam("name") String name){
		Double qdzh = null;
		Double zdzh = null;
		try{
			qdzh = Double.parseDouble(qdzh_string);
			zdzh = Double.parseDouble(zdzh_string);
		}catch(Exception e){
			System.out.println("qdzh和zdzh没有输入或格式错误！");qdzh=null;zdzh=null;
		}
		xzqhbm = CheckEmpty.subXzqhbm(xzqhbm);
		List<Sfz> list = server.listAll(lxbm,xzqhbm,sxxfx,qdzh,zdzh,name);
		return list;
	}
	
	@GET
	@Path("/one")
	@Produces(MediaType.APPLICATION_JSON)
	public Sfz one(@QueryParam("id")String id){
		Sfz one = server.queryById(id);
		return one;
	}
	
	@GET
	@Path("/auto")
	@Produces(MediaType.APPLICATION_JSON)
	public List<String> pienext(@QueryParam("name")String name){
		return server.selectName(name);
	}
}
